/* eslint-disable */
export default {
  data() {
    return {
      rolesData: [
        {
          roleName: '主管',
          roleDesc: '技术负责人'
        }
      ],
      // 是否显示对话框
      dialogAssignRightsVisible: false,
      treeList: [],
      data: [
        {
          id: 1,
          label: '一级 1',
          children: [
            {
              id: 4,
              label: '二级 1-1',
              children: [
                {
                  id: 9,
                  label: '三级 1-1-1'
                },
                {
                  id: 10,
                  label: '三级 1-1-2'
                }
              ]
            }
          ]
        },
        {
          id: 2,
          label: '一级 2',
          children: [
            {
              id: 5,
              label: '二级 2-1'
            },
            {
              id: 6,
              label: '二级 2-2'
            }
          ]
        },
        {
          id: 3,
          label: '一级 3',
          children: [
            {
              id: 7,
              label: '二级 3-1'
            },
            {
              id: 8,
              label: '二级 3-2'
            }
          ]
        }
      ],
      defaultProps: {
        children: 'children',
        label: 'authName'
      },
      // 当前角色的id
      roleId: 0
    }
  },
  created() {
    this.loadRolesData()
    this.loadTreeRightsList()
  },
  methods: {
    /**
     * 加载角色列表数据
     */
    async loadRolesData() {
      let res = await this.$axios.get('roles')
      console.log(res)
      // 赋值
      this.rolesData = res.data.data
    },
    /**
     * 处理 索引
     */
    indexMethod(index) {
      return index
    },
    /**
     * 获取全部的权限信息
     *
     *
     */
    async loadTreeRightsList() {
      let res = await this.$axios.get('rights/tree')
      console.log(res)
      this.treeList = res.data.data
    },
    // 显示分配权限对话框
    showAssignRightDialog(row) {
      this.dialogAssignRightsVisible = true

      // 获取当前角色的id
      // console.log(row.id)
      this.roleId = row.id

      // 获取第三层的id 放到 一个数组里即可
      let keys = []
      // 第一层
      row.children.forEach(item1 => {
        // 第二层
        item1.children.forEach(item2 => {
          // 第三层
          item2.children.forEach(item3 => {
            // console.log(item3.id)
            keys.push(item3.id)
          })
        })
      })

      // 树节点的选择
      // 异步DOM更新
      // 1. 延时器
      // 2. nextTrick 渲染 DOM完毕之后,自动调用nextTick的回调
      // console.log(this.$refs)
      this.$nextTick(() => {
        // console.log(this.$refs.tree)
        // this.$refs.tree.setCheckedKeys([116])
        this.$refs.tree.setCheckedKeys(keys)
      })
    },
    /**
     * 分配 权限
     */
    async assignRights() {
      console.log(this.roleId)

      // 1. 获取半选和全选的id
      // 全选的id/key
      let keys1 = this.$refs.tree.getCheckedKeys()
      // 半选的id/key
      let keys2 = this.$refs.tree.getHalfCheckedKeys()
      // 拼接两个数组里的元素
      let keys = [...keys1, ...keys2]
      // console.log(keys)

      //2. 发送请求
      // roleId : 角色id  this.roleId
      // rids :  权限的id  keys1
      // [101,104,116]  => 字符串 => '101,104,116'
      let res = await this.$axios.post(`roles/${this.roleId}/rights`, {
        rids: keys.join(',')
      })
      console.log(res)
      if (res.data.meta.status === 200) {
        //3.1 对话框关闭
        this.dialogAssignRightsVisible = false
        //3.2 提示
        this.$message({
          message: '角色授权成功',
          type: 'success',
          duration: 800
        })
        //3.3 重新刷新
        this.loadRolesData()
      }
    }
  }
}
